package com.yidu.labyrinth.dao;

import com.yidu.labyrinth.main.LabyrinthModuleEntity;
import com.yidu.labyrinth.main.LabyrinthModuleOrRoleEntity;
import com.yidu.labyrinth.main.LabyrinthRoleEntity;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.util.StringUtils;

import java.util.Iterator;
import java.util.List;

public class LabyrinthRolesModulesDaoImpl implements LabyrinthRolesModulesDao{

    private HibernateTemplate hibernateTemplate;

    public HibernateTemplate getHibernateTemplate() {
        return hibernateTemplate;
    }

    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
        this.hibernateTemplate = hibernateTemplate;
    }

/*
    @Override
    public void add(LabyrinthModuleOrRoleEntity labyrinthModuleOrRoleEntity) {

        hibernateTemplate.save(labyrinthModuleOrRoleEntity);

    }*/

    @Override
    public void deleteAll(LabyrinthModuleOrRoleEntity labyrinthModuleOrRoleEntity) {

        List list = hibernateTemplate.find("from LabyrinthModuleOrRoleEntity where roleId ='"+labyrinthModuleOrRoleEntity.getRoleId()+"'");
        if(list.size()>0){
            this.getHibernateTemplate().deleteAll(list);
        }



    }

    @Override
    public List<LabyrinthModuleOrRoleEntity> select(LabyrinthModuleOrRoleEntity labyrinthModuleOrRoleEntity) {
        DetachedCriteria criteria = DetachedCriteria.forClass(LabyrinthModuleOrRoleEntity.class);

        if(!StringUtils.isEmpty(labyrinthModuleOrRoleEntity.getRoleId())){
            criteria.add(Restrictions.eq("roleId",labyrinthModuleOrRoleEntity.getRoleId()));
        }

        List<LabyrinthModuleOrRoleEntity> list  = (List<LabyrinthModuleOrRoleEntity>) hibernateTemplate.findByCriteria(criteria);

        return list;


    }

    @Override
    public List<LabyrinthModuleEntity> findAll() {

        DetachedCriteria detachedCriteria = DetachedCriteria.forClass(LabyrinthModuleEntity.class);
        List<LabyrinthModuleEntity> list = (List<LabyrinthModuleEntity>) hibernateTemplate.findByCriteria(detachedCriteria);


        System.out.println(list.size()+"dao集合");

        return list;
    }

    @Override
    public List<LabyrinthModuleOrRoleEntity> findRoleId(String roleId) {

        System.out.println(roleId+"id等于");

        List<LabyrinthModuleOrRoleEntity> list = (List<LabyrinthModuleOrRoleEntity>) hibernateTemplate.find("from LabyrinthModuleOrRoleEntity where roleId = '" + roleId + "'");


        return list;
    }


    @Override
    public void saveOrUpdate(LabyrinthModuleOrRoleEntity roleModule) {

        hibernateTemplate.saveOrUpdate(roleModule);

    }

    @Override
    public LabyrinthModuleEntity findById(String moduleId) {

        return hibernateTemplate.get(LabyrinthModuleEntity.class, moduleId);


    }


    @Override
    public LabyrinthRoleEntity findId(String roleId) {

        return hibernateTemplate.get(LabyrinthRoleEntity.class, roleId);

    }

    @Override
    public void add(LabyrinthRoleEntity role) {
        hibernateTemplate.save(role);
    }

    @Override
    public void update(LabyrinthRoleEntity role) {

        hibernateTemplate.update(role);
    }


}
